--- /dev/null
+org.gnome.Geary.desktop
+org.gnome.Contacts.desktop
+org.gnome.Weather.desktop
+org.gnome.clocks.desktop
+org.gnome.Maps.desktop
+org.gnome.Books.desktop
+org.gnome.Photos.desktop
+org.gnome.Totem.desktop
+org.gnome.Calculator.desktop
+org.gnome.gedit.desktop
+simple-scan.desktop
+org.gnome.Settings.desktop
+org.gnome.SystemMonitor.desktop
+org.gnome.Boxes.desktop
+org.gnome.Terminal.desktop
+Utilities # folder
+org.gnome.Characters.desktop
+yelp.desktop
+org.gnome.Screenshot.desktop
+org.gnome.Cheese.desktop
+org.gnome.font-viewer.desktop
--- /dev/null
+org.gnome.Epiphany.desktop
+org.gnome.Calendar.desktop
+org.gnome.Music.desktop
+gnome.Nautilus.desktop
+org.gnome.Software.desktop
+org.gnome.TextEditor.desktop
--- /dev/null
+# Sorted by name as shown in menus, not filename
+nm-connection-editor.desktop # Advanced Network Configuration
+org.gnome.DejaDup.desktop # Backups
+org.gnome.Characters.desktop # Characters
+org.gnome.Connections.desktop # Connections
+org.gnome.DiskUtility.desktop # Disks
+org.gnome.baobab.desktop # Disk Usage Analyzer
+org.gnome.Evince.desktop # Document Viewer
+org.gnome.FileRoller.desktop # File Roller
+org.gnome.font-viewer.desktop # Fonts
+org.gnome.Loupe.desktop # Image Viewer
+org.gnome.Logs.desktop # Logs
+org.freedesktop.MalcontentControl.desktop # Parental Controls
+org.gnome.seahorse.Application.desktop # Passwords and Keys
+org.freedesktop.GnomeAbrt.desktop # Problem Reporting
+org.gnome.tweaks.desktop # Tweaks
+org.gnome.Usage.desktop # Usage
schemaconf = configuration_data()
schemaconf.set('GETTEXT_PACKAGE', meson.project_name())
+schemaconf.set('DASH_APPS', run_command(
+ generate_app_list, 'default-apps/dash.txt',
+ check: true,
+).stdout())
+schemaconf.set('APP_GRID_APPS', run_command(
+ generate_app_list, '--pages', 'default-apps/app-grid.txt',
+ check: true,
+).stdout())
schema = configure_file(
input: 'org.gnome.shell.gschema.xml.in',
output: 'org.gnome.shell.gschema.xml',
</description>
</key>
<key name="favorite-apps" type="as">
- <default>[ 'org.gnome.Epiphany.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'org.gnome.TextEditor.desktop']</default>
+ <default>
+ @DASH_APPS@
+ </default>
<summary>List of desktop file IDs for favorite applications</summary>
<description>
The applications corresponding to these identifiers
</key>
<key name="app-picker-layout" type="aa{sv}">
<default><![CDATA[
- [{
- 'org.gnome.Geary.desktop': <{'position': <0>}>,
- 'org.gnome.Contacts.desktop': <{'position': <1>}>,
- 'org.gnome.Weather.desktop': <{'position': <2>}>,
- 'org.gnome.clocks.desktop': <{'position': <3>}>,
- 'org.gnome.Maps.desktop': <{'position': <4>}>,
- 'org.gnome.Books.desktop': <{'position': <5>}>,
- 'org.gnome.Photos.desktop': <{'position': <6>}>,
- 'org.gnome.Totem.desktop': <{'position': <7>}>,
- 'org.gnome.Calculator.desktop': <{'position': <8>}>,
- 'org.gnome.gedit.desktop': <{'position': <9>}>,
- 'simple-scan.desktop': <{'position': <10>}>,
- 'org.gnome.Settings.desktop': <{'position': <11>}>,
- 'org.gnome.SystemMonitor.desktop': <{'position': <12>}>,
- 'org.gnome.Boxes.desktop': <{'position': <13>}>,
- 'org.gnome.Terminal.desktop': <{'position': <14>}>,
- 'Utilities': <{'position': <15>}>,
- 'org.gnome.Characters.desktop': <{'position': <16>}>,
- 'yelp.desktop': <{'position': <17>}>,
- 'org.gnome.Screenshot.desktop': <{'position': <18>}>,
- 'org.gnome.Cheese.desktop': <{'position': <19>}>,
- 'org.gnome.font-viewer.desktop': <{'position': <20>}>
- }]
+ @APP_GRID_APPS@
]]></default>
<summary>Layout of the app picker</summary>
<description>
export const HAVE_BLUETOOTH = pkg.checkSymbol('GnomeBluetooth', '3.0',
'Client.default_adapter_state');
+
+export const UTILITIES_FOLDER_APPS = @UTILS_FOLDER_APPS@;
jsconf.set('LIBMUTTER_API_VERSION', mutter_api_version)
jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager)
jsconf.set10('HAVE_PORTAL_HELPER', have_portal_helper)
+jsconf.set('UTILS_FOLDER_APPS', run_command(
+ generate_app_list, '../../data/default-apps/utilities-folder.txt',
+ check: true,
+).stdout())
jsconf.set('datadir', datadir)
jsconf.set('libexecdir', libexecdir)
import * as Main from './main.js';
+import {UTILITIES_FOLDER_APPS} from '../misc/config.js';
+
const MENU_POPUP_TIMEOUT = 600;
const POPDOWN_DIALOG_TIMEOUT = 500;
const DEFAULT_FOLDERS = {
'Utilities': {
name: 'X-GNOME-Shell-Utilities.directory',
- apps: [
- // Sorted by name as shown in menus, not filename
- 'nm-connection-editor.desktop', // Advanced Network Configuration
- 'org.gnome.DejaDup.desktop', // Backups
- 'org.gnome.Characters.desktop', // Characters
- 'org.gnome.Connections.desktop', // Connections
- 'org.gnome.DiskUtility.desktop', // Disks
- 'org.gnome.baobab.desktop', // Disk Usage Analyzer
- 'org.gnome.Evince.desktop', // Document Viewer
- 'org.gnome.FileRoller.desktop', // File Roller
- 'org.gnome.font-viewer.desktop', // Fonts
- 'org.gnome.Loupe.desktop', // Image Viewer
- 'org.gnome.Logs.desktop', // Logs
- 'org.freedesktop.MalcontentControl.desktop', // Parental Controls
- 'org.gnome.seahorse.Application.desktop', // Passwords and Keys
- 'org.freedesktop.GnomeAbrt.desktop', // Problem Reporting
- 'org.gnome.tweaks.desktop', // Tweaks
- 'org.gnome.Usage.desktop', // Usage
- ],
+ apps: UTILITIES_FOLDER_APPS,
},
'YaST': {
name: 'suse-yast.directory',
mutter_typelibdir = mutter_dep.get_variable('typelibdir')
python = find_program('python3')
gjs = find_program('gjs')
+generate_app_list = find_program('meson/generate-app-list.py')
cc = meson.get_compiler('c')
--- /dev/null
+#!/usr/bin/env python3
+
+import argparse
+
+def read_app_ids(path) -> str:
+ ids = []
+ with open(path, "r") as file:
+ for line in file:
+ # strip comments
+ line, _, _ = line.partition('#');
+ line = line.strip()
+ if len(line) > 0:
+ ids.append(line)
+ return ids
+
+def print_as_array(ids):
+ mapped_ids = list(map(lambda i: f" '{i}'", ids))
+ print('[')
+ print(',\n'.join(mapped_ids))
+ print(']')
+
+def print_as_pages(ids):
+ mapped_ids = []
+ for i, id in enumerate(ids):
+ mapped_ids.append(f" '{id}': <{{'position': <{i}>}}>")
+
+ print('[{')
+ print(',\n'.join(mapped_ids))
+ print('}]')
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--pages', action='store_true')
+parser.add_argument('file')
+args = parser.parse_args()
+
+ids = read_app_ids(args.file)
+if args.pages:
+ print_as_pages(ids)
+else:
+ print_as_array(ids)